Graphics display systems, particularly inexpensive, hand-held, battery powered digital devices (“portable digital appliance”) such as mobile or cellular telephones, typically employ a graphics controller as an interface between one or more providers of image data and a graphics display device such as an LCD panel or panels. The providers of image data are typically a host, such as a CPU, and a camera. The host and camera transmit image data to the graphics controller for ultimate display on the display device. The display device is adapted for displaying on its display areas pixels of digital image data (“pixel data”). The host also transmits control data to both the graphics controller and the camera to control the operation of these devices. Commonly, the graphics controller is a separate integrated circuit (“IC”) and the graphics controller, the host, and the camera are all remote from one another.
The graphics controller provides various processing options for processing image data received from the host and camera. For example, the graphics controller may compress or decompress, e.g., JPEG encode or decode, incoming or outgoing image data, crop the image data, resize the image data, scale the image data, and color convert the image data according to one of a number of alternative color conversion schemes.
The graphics controller often includes an embedded memory for storing image data received from the image data source. In addition, the memory for storing image data received from the image data source may be located in a separate IC from the graphics controller IC. The image data may stored in a frame buffer portion of the memory for subsequent fetching and transmission to the display device. In addition, image processing operations may be performed on the data before it is stored in memory, or the data may be fetched from the memory for image processing operations and then transmitted to the display device or restored in the memory. The memory is organized as a 2-dimensional matrix having rows and columns. The pixel data stored at a given row and column in the memory are mapped into a corresponding row and column of the display device. In general, the memory may be Dynamic Random Access Memory (“DRAM ”), Synchronous DRAM (“SDRAM”), or Static RAM (“SRAM”). SRAM is faster than DRAM and SDRAM, but more expensive. Accordingly, DRAM and SDRAM are frequently employed for storing image data.
DRAM and SDRAM store data on capacitors which, due to leakage, must be periodically recharged or refreshed. With DRAM and SDRAM, row address select (“RAS”) and “precharge” cycles are required before a memory location may be accessed. After the RAS and precharge cycles are complete, data may be written to, or read from, the row in a “burst mode” that sequentially steps through the columns within the row from a given starting point. An entire row in the DRAM is alternatively referred to as a “page.”
Conventionally, the host and camera provide image data to the graphics controller in raster scan order, that is, pixels are provided from side-to-side in lines from top-to-bottom. The raster ordered pixel data are also generally stored in sequential memory locations, that is from side-to-side in sequential rows of the memory. Further, the pixel data are generally fetched for processing or transmission to the display device in raster order. Fetching image data in raster order, which was presented for storage in raster order and which was stored from side-to-side in sequential rows of the memory, is efficient. The reason is that the data may be fetched a row at a time in burst mode.
However, graphics display systems commonly provide for image rotation. If an image is stored in memory in raster order, when the image is rotated, the image data must be fetched in a different order from which it was stored. In order to write a single line of a rotated image to the display, pixel data must be fetched from a large number of different rows of the memory. Generally, since each page change in a DRAM or SDRAM requires RAS and precharge cycles, image rotation significantly reduces the efficiency of data fetches when using a DRAM memory.
There is therefore for a need for a method and apparatus for efficient rotation of an image in a graphics display system.